home *** CD-ROM | disk | FTP | other *** search
- #ifndef _H_BASE_META
- #define _H_BASE_META
-
- #ifndef lint
- static const char base_meta_sccsid[]="%W% %G% %U%:Component-%Y% %Q%";
- #endif // lint
-
- const int BASE_TYPE_INCR = 5 ;
-
- class BaseMeta ; // a fwd declaration
-
- // a class declaration for maintaining type information
- typedef struct impl_entry_s
- {
- ImplSpec *type ;
- BaseMeta *hdlr ;
- } impl_entry ;
-
- typedef struct impl_table_s
- {
- int index ;
- int size ;
- impl_entry *entries ;
- } impl_table_t ;
-
-
- class BaseMeta : public virtual CLASS
- {
- public :
- BaseMeta() ;
- virtual ~BaseMeta() ;
- virtual void register_type(ImplSpec *,BaseMeta *);
- virtual void unregister_type (ImplSpec *) ;
- virtual CLASS *instantiate(ImplSpec *) ;
- virtual impl_entry *find_info(ImplSpec *) ;
- RTTI_SCAFFOLDING_DECL(BaseMeta)
-
-
- private :
- // private meta-data
- impl_table_t *table ;
- impl_entry *alloc_entries(void ) ;
-
- } ; // declaration of the meta-class
-
-
- #endif // _H_BASE_META
-
-